package com.desire.service.base.imp;

import com.desire.bean.base.Product;
import com.desire.bean.common.PageBean;
import com.desire.common.Base.BaseServiceImpl;
import com.desire.mapper.base.ProductMapper;
import com.desire.service.base.ProductService;
import com.desire.utils.MapUtils;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * @author LittleDesire
 * @description
 * @date 2022-05-23 周一 14:18
 * @since 17
 */
@Service
public class ProductServiceImpl extends BaseServiceImpl<Product, ProductMapper> implements ProductService {
    @Override
    public int save(Product mapOrEntity) {
        String code = mapper.queryMaxCode(mapOrEntity.getEuid(), mapOrEntity.getCode());
        String maxCode = null;
        if (null == code) {
            // 说明是该类别的第一个商品
            maxCode = mapOrEntity.getCategoryCode() + "-0001";
        } else {
            maxCode = getNextCode(code);
        }
        mapOrEntity.setCode(maxCode);
        return super.save(mapOrEntity);
    }

    /**
     * 获得当前最大编号的下一个编号
     *
     * @param code
     * @return
     */
    String getNextCode(String code) {
        int pos = code.indexOf("-");
        // 前半段
        String pre = code.substring(0, pos + 1);
        // 后半段
        String seq = code.substring(pos + 1);
        int i = Integer.parseInt(seq);
        i++;
        return pre + String.format("%04d", i);
    }

    @Override
    public PageBean queryProduct(Map<String, Object> map) {
        PageHelper.startPage(MapUtils.getPageNumValue(map), MapUtils.getPageSizeValue(map));
        List<Map<String, Object>> list = mapper.queryProduct(map);
        Page<Map<String, Object>> page = (Page<Map<String, Object>>) list;
        return new PageBean(page.getPageNum(), page.getPageSize(), page.getTotal(), page.getPages(), list);

    }
}
